﻿$(function () {

    $("#dialog-roles").dialog({
        autoOpen: false,
        height: 200,
        width: 600,
        modal: true,
        buttons:
        {
            "Guardar": function () {
                guardarRol();
            },
            "Cancelar": function () {
                limpiar();
                $(this).dialog("close");
            }
        },
        close: function () {
            limpiar();
        }
    });

    $("#dialog-opciones").dialog({
        autoOpen: false,
        height: 220,
        width: 600,
        modal: true,
        buttons:
        {
            "Guardar": function () {
                guardarPermisoOpcion();
            },
            "Cancelar": function () {
                limpiar();
                $(this).dialog("close");
            }
        },
        close: function () {
            limpiar();
        }
    });

    $("#btnNuevoRol").click(function (event) {
        event.preventDefault();

        $("#dialog-roles").dialog('option', 'title', 'EDICION DE ROL');
        $("#dialog-roles").dialog("open");
    });

    $("#btnAgregarOpcion").click(function (event) {
        event.preventDefault();
        $("#btnLimpiaOpcion").show();
        $("#btnBuscarOpcion").show();

        $("#dialog-opciones").dialog('option', 'title', 'EDICION DE PERMISO POR OPCION');
        $("#dialog-opciones").dialog("open");
    });

    $("#btnDesactivarRol").click(function (event) {
        var guid_rol = $("#lstRoles").val();
        eliminarRol(guid_rol);
    });

    $("#txtBuscarLista").keypress(function (event) {
        if (event.which == 13) {
            event.preventDefault();
            $("#btnBuscarLista").trigger("click");
        }
    });

    $("#lstRoles").change(function (event) {
        $("#resultados").html("");
        var guid_rol = $("#lstRoles").val();
        var rol = $("#lstRoles option:selected").text();

        switch (guid_rol) {
            case "0":
                $("#div_buscar").hide();
                break;
            default:
                $("#resultados_title").html("<h3>" + rol + " - OPCIONES Y PERMISOS</h3>");
                buscar();
                break;
        }
    });

    function listarRoles() {
        $("#listado").html("");

        var parametros = {
            "tipo_presentacion": "option"
        };

        $.ajax({
            data: parametros,
            url: basePath + "/Seguridades/ListarRoles",
            type: "POST",
            async: false,
            beforeSend: function () {
                $("#load").html("Consultando roles ... <img src='" + basePath + "/Images/16_progress.gif' style='vertical-align: middle;'>");
            },
            success: function (response) {
                $("#load").html("");
                $("#lstRoles").html(response);
                $("#div_buscar").hide();
            }
        });
    }

    $("#btnBuscarLista").click(function (event) {
        event.preventDefault();
        var title = $("#dialog-list").dialog("option", "title");
        switch (title) {
            case "Opciones":
                listarOpcionesDisponiblesPorRol("txtCodOpcion", "txtOpcion");
                break;
            default:
                break;
        }
        return;
    });

    $("#btnLimpiaOpcion").click(function (event) {
        event.preventDefault();
        $("#txtCodOpcion").val("");
        $("#txtOpcion").val("");
    });

    $("#btnBuscarOpcion").click(function (event) {
        event.preventDefault();
        $("#txtBuscarLista").val("");
        $("#listado").html("");
        listarOpcionesDisponiblesPorRol("txtCodOpcion", "txtOpcion");
        $("#dialog-list").dialog('option', 'title', 'Opciones');
        $("#dialog-list").dialog("open");
    });

    function buscar() {
        $("#mensaje_container").hide();
        $("#mensaje").html("");
        var guid_rol = $("#lstRoles").val();

        var texto = "";
        var parametros = {
            "texto": texto,
            "guid_rol": guid_rol
        };

        $.ajax({
            data: parametros,
            url: basePath + "/Seguridades/ListarOpcionesPorRol",
            type: "POST",
            async: false,
            beforeSend: function () {
                $("#load").show();
            },
            success: function (response) {
                $("#div_buscar").show();
                $("#resultados").show();
                $("#resultados").html(response);
                $("#load").hide();

                var puede_editar = tiene_permiso("EDITAR");
                var puede_borrar = tiene_permiso("BORRAR");

                if (puede_borrar == "SI" || puede_editar == 'SI') {

                    var nCloneTh = document.createElement('th');
                    var nCloneTd = document.createElement('td');

                    $('#tableOpcionesPermisos thead tr').each(function () {
                        this.insertBefore(nCloneTh, this.childNodes[0]);
                    });

                    $('#tableOpcionesPermisos tbody tr').each(function () {
                        var guid = this.childNodes[9].innerHTML;
                        nCloneTd.innerHTML = "<div style='width: 150px;'>";

                        if (puede_editar == "SI") {
                            nCloneTd.innerHTML = "<button title='Editar' id='editPermiso_" + guid + "' class='btnEdit'><img style='vertical-align: top;' src='" + basePath + "/Images/edit.png'></button>";
                        }

                        if (puede_borrar == "SI") {
                            nCloneTd.innerHTML += "<button title='Eliminar' id='deletePermiso_" + guid + "' class='btnDelete'><img style='vertical-align: top;' src='" + basePath + "/Images/delete.png'></button>";
                        }

                        nCloneTd.innerHTML += "</div>";
                        this.insertBefore(nCloneTd.cloneNode(true), this.childNodes[0]);

                    });
                }
                if (puede_editar == "SI") {
                    $(".btnEdit").button();
                    $(".btnEdit").click(function () {
                        guid = this.id.replace("editPermiso_", "");

                        consultarPermisoOpcion(guid);
                        $("#btnAgregarOpcion").trigger("click");

                    });
                }

                if (puede_borrar == "SI") {
                    $(".btnDelete").button();
                    $(".btnDelete").click(function () {
                        guid = this.id.replace("deletePermiso_", "");
                        $("#dialog-confirm").dialog({
                            autoOpen: false,
                            resizable: false,
                            height: 160,
                            modal: true,
                            buttons: {
                                "Si": function () {
                                    $(this).dialog("close");
                                    eliminarUsuario(guid);
                                },
                                "No": function () {
                                    $(this).dialog("close");
                                }
                            }
                        });
                        $("#dialog-confirm").dialog("option", "title", "Eliminar permiso");
                        $("#dialog-confirm-message").html("¿ Está seguro que desea eliminar este permiso ?");
                        $("#dialog-confirm").dialog("open");
                    });

                }

                toDatatable("tableOpcionesPermisos", "opcionesPermisos")

            }
        });
    }

    function consultarPermisoOpcion(guid) {
        limpiar();
        var parametros = {
            "guid": guid
        };
        $.ajax({
            data: parametros,
            url: basePath + "/Seguridades/ConsultarPermisoOpcion",
            type: "POST",
            async: false,
            beforeSend: function () {
            },
            success: function (response) {
                var xml = response;
                $("#xmlData").html(xml);

                $("#txtGuidPermiso").val($("#guid").html());
                $("#txtCodOpcion").val($("#guid_opcion").html());
                $("#txtOpcion").val($("#opcion").html());
                $("#lstAcceder").val($("#acceder").html());
                $("#lstBorrar").val($("#borrar").html());
                $("#lstEditar").val($("#editar").html());
                $("#lstExportar").val($("#exportar").html());
                $("#lstImportar").val($("#importar").html());
                $("#lstListar").val($("#listar").html());
                $("#lstVer").val($("#ver").html());
            }
        });
    }

    function eliminarRol(guid) {
        var parametros = {
            "guid": guid
        };
        $.ajax({
            data: parametros,
            url: basePath + "/Seguridades/EliminarRol",
            type: "POST",
            async: false,
            beforeSend: function () {
            },
            success: function (response) {
                listarRoles();
            }
        });
    }

    function listarOpcionesDisponiblesPorRol(txtIdObj, txtDescObj) {
        var guid_rol = $("#lstRoles").val();

        var parametros = {
            "tipo": "table",
            "guid_rol": guid_rol
        };
        $("#listado").html("");
        $.ajax({
            data: parametros,
            url: basePath + "/Seguridades/ListarOpcionesDisponiblesPorRol",
            type: "POST",
            async: false,
            beforeSend: function () {
                $("#load_list").html("Buscando ... <img src='" + basePath + "/Images/16_progress.gif' style='vertical-align: middle;'>");
            },
            success: function (response) {
                $("#load_list").html("");
                $("#listado").html(response);

                $(".btItem").click(function (event) {
                    var id = this.id;
                    $("#" + txtIdObj).val(id);
                    $("#" + txtDescObj).val($("#" + id).html());
                    $("#listado").html("");
                    $("#txtBuscarLista").val("");
                    $("#dialog-list").dialog("close");
                });
            }
        });
    }

    function guardarRol() {
        var guid = $("#txtGuidRol").val();
        var descripcion = $("#txtDescripcionRol").val().toUpperCase();
        var id_estado = $("#lstEstadoRol").val();
        var usuario_ing = codusuario;

        if (descripcion == '') {
            $("#load_rol").html("Por favor ingrese la descripción del rol.");
            return 0;
        }

        $("#load_rol").html("");
        var parametros = {
            "guid": guid,
            "descripcion": descripcion.substring(0, 200),
            "id_estado": id_estado,
            "usuario_ing": usuario_ing
        };

        $.ajax({
            data: parametros,
            url: basePath + "/Seguridades/GuardarRolAction",
            type: "POST",
            async: false,
            beforeSend: function () {
                $("#load_rol").html("<img src='" + basePath + "/Images/16_progress.gif'> Guardando ...");
            },
            success: function (response) {
                $("#load_rol").html("");

                if (response == '') {
                    listarRoles();
                    limpiar();
                    $("#dialog-roles").dialog("close");

                }
                else {
                    $("#load_rol").html(response);
                }
            }
        });
    }

    function guardarPermisoOpcion() {
        var guid = $("#txtGuidPermiso").val();
        var guid_rol = $("#lstRoles").val();
        var guid_opcion = $("#txtCodOpcion").val();
        var acceder = $("#lstAcceder").val();
        var borrar = $("#lstBorrar").val();
        var editar = $("#lstEditar").val();
        var exportar = $("#lstExportar").val();
        var importar = $("#lstImportar").val();
        var listar = $("#lstListar").val();
        var ver = $("#lstVer").val();

        var usuario_ing = codusuario;

        if (guid_opcion == '') {
            $("#load_opcion").html("Por favor ingrese la opción.");
            return 0;
        }

        $("#load_rol").html("");
        var parametros = {
            "guid": guid,
            "guid_rol": guid_rol,
            "guid_opcion": guid_opcion,
            "acceder": acceder,
            "borrar": borrar,
            "editar": editar,
            "exportar": exportar,
            "importar": importar,
            "listar": listar,
            "ver": ver,
            "acceder": acceder,
            "usuario_ing": usuario_ing
        };

        $.ajax({
            data: parametros,
            url: basePath + "/Seguridades/GuardarPermisoOpcionAction",
            type: "POST",
            async: false,
            beforeSend: function () {
                $("#load_opcion").html("<img src='" + basePath + "/Images/16_progress.gif'> Guardando ...");
            },
            success: function (response) {
                $("#load_opcion").html("");

                if (response == '') {
                    buscar();
                    limpiar();
                    $("#dialog-opciones").dialog("close");

                }
                else {
                    $("#load_opcion").html(response);
                }
            }
        });
    }

    function limpiar() {
        $("#txtGuidOpcion").val("");
        $("#txtDescripcion").val("");
        $("#lstEstado").val("1");

        $("#txtCodOpcion").val("");
        $("#txtOpcion").val("");

        $("#txtGuidPermiso").val("");

        $("#lstAcceder").val("0");
        $("#lstBorrar").val("0");
        $("#lstEditar").val("0");
        $("#lstExportar").val("0");
        $("#lstImportar").val("0");
        $("#lstListar").val("0");
        $("#lstVer").val("0");
    }

    function toDatatable(tablename, filename) {
        $('#' + tablename).dataTable({
            "bLengthChange": true,
            "bProcessing": true,
            "iDisplayLength": 50,
            "bJQueryUI": true,
            "sScrollX": "100%",
            "bScrollCollapse": false,
            "sScrollY": "250px",
            "bPaginate": true,
            "bDeferRender": true,
            "sPaginationType": "full_numbers",
            "oLanguage": {
                "sProcessing": "Procesando...",
                "sLengthMenu": "Mostrar _MENU_ registros",
                "sZeroRecords": "No se encontraron resultados",
                "sEmptyTable": "Ningún dato disponible en esta tabla",
                "sInfo": "Mostrando registros del _START_ al _END_ de un total de _TOTAL_ registros",
                "sInfoEmpty": "Mostrando registros del 0 al 0 de un total de 0 registros",
                "sInfoFiltered": "(filtrado de un total de _MAX_ registros)",
                "sInfoPostFix": "",
                "sSearch": "Buscar:",
                "sUrl": "",
                "sInfoThousands": ",",
                "sLoadingRecords": "Cargando...",
                "oPaginate": {
                    "sFirst": "Primero",
                    "sLast": "Último",
                    "sNext": "Siguiente",
                    "sPrevious": "Anterior"
                },
                "oAria": {
                    "sSortAscending": ": Activar para ordenar la columna de manera ascendente",
                    "sSortDescending": ": Activar para ordenar la columna de manera descendente"
                }
            },
            "sDom": '<"H"Tfr>t<"F"ipl>',
            "aoColumnDefs": [
                        { "sType": "numeric", "aTargets": [4] }
                    ],
            "aoColumnDefs": [
                        { "sWidth": "100px", "aTargets": [0] }
                    ],
            "oTableTools": {
                "aButtons": [
                            {
                                "sExtends": "copy",
                                "sButtonText": "<img alt='Copiar al portapapeles' src='" + basePath + "/Images/copy_hover.png'/> Copiar"
                            },
                            {
                                "sExtends": "xls",
                                "sButtonText": "<img alt='Exporta a Excel' src='" + basePath + "/Images/xls_hover.png'/> Excel",
                                "sDiv": "",
                                "sTitle": filename,
                                "bHeader": true,
                                "sCharSet": "utf16le",
                                "sFileName": "*.xls"
                                /*"fnCellRender": function (sValue, iColumn, nTr, iDataIndex) {
                                // Append text to column 3
                                if (iColumn === 2) {
                                return "'" + sValue + "";
                                }
                                return sValue;
                                }*/
                            },
                            {
                                "sExtends": "pdf",
                                "sButtonText": "<img alt='Exportar a PDF' src='" + basePath + "/Images/pdf_hover.png'/> PDF",
                                "sPdfOrientation": "landscape",
                                "bHeader": true,
                                "sTitle": filename
                            }
                        ]
            }
        });

    }

    listarRoles();
});
